---
id: 656475bbf1c2573de1d2c69c
title: Крок 11
challengeType: 20
dashedName: step-11
---

# --description--

Кожного разу, коли виконується код, ви повинні бачити випадковий символ із рядка `all_characters`. Саме цього потрібно досягти, створюючи випадковий пароль.

Однак алгоритм, на який покладається `random`, робить згенеровані псевдовипадкові числа передбачуваними. Тому, хоча модуль `random` підходить для найпоширеніших програм, його не можна використовувати для криптографії через детерміновану природу.

Імпортуйте модуль `secrets` замість `random`. Потім змініть виклик `print()`, щоб використати `secrets.choice(all_characters)`.

# --hints--

Імпортуйте модуль `secrets`, а не модуль `random`.

```js
({
  test: () => {
    assert.match(code, /^import\s+secrets/m)
    assert.isFalse( /^import\s+random/m.test(code))
  }
})
```

Змініть наявний виклик `print()`, щоб надрукувати `secrets.choice(all_characters)`.

```js
({ test: () => assert.match(code, /^print\s*\(\s*secrets\.choice\s*\(\s*all_characters\s*\)\s*\)/m) })
```

# --seed--

## --seed-contents--

```py
--fcc-editable-region--
import random
import string


# Define the possible characters for the password
letters = string.ascii_letters
digits = string.digits
symbols = string.punctuation

# Combine all characters
all_characters = letters + digits + symbols

print(all_characters)
print(random.choice(all_characters))
--fcc-editable-region--
```
